----------------------------
Set 						|
----------------------------
	# 可变集合
	# 根JAVA的Set一个德行,不能存放相同的数据
	# 元素的数据类型
		* 要保证hash的正确性，作为元素的对象就不能变。
		* 运行作为元素的数据类型
			基本数据类型,frozenset,tuple 

		* 不允许作为元素的数据类型
			dict,list,set	

	# 定义
		sets = {1,1,2,3,4}
		sets = set([1,2,"4"])
		* 可以使用一个List来初始化Set元素,也可以不用.表示创建空的set
		* 如果传递是字符串,则字符串的每个字符都作为set的成员
		* 注意初始化的'List'中'不能嵌套 List'
	
	# 集合内涵
		* 是一种集合的生成式
		* 写集合生成式时，把要生成的元素x * x放到前面，后面跟for循环，就可以把list创建出来
		* 后面可以跟上一个 boolean 表达式,表示过滤
		{x * x for x in range(1, 11)}
		{1, 4, 9, 16, 25, 36, 49, 64, 81, 100}

		{x * x for x in range(1, 11) if x % 2 == 0}
		{4, 16, 36, 64, 100}

		{x for x in range(1,10) if x %2 == 0}
		{2, 4, 6, 8}
		
	# 支持 in / not in 操作,来判断元素是否存在于set


----------------------------
frozenset					|
----------------------------
	# 非可变集合
	# 跟集合是一个德行,但是它是不可变的,值一旦初始化就不能改变,因此它是可Hash的,允许作为Set成员/Dict的key
	# 他不能执行添加/移除/清空等操作
	# 创建
		frozenset()
			* 通过工厂函数创建

----------------------------
Set-关系测试 				|
----------------------------
	a = set([1,2,3,4,5])
	b = set([4,5,6,7,8])

	# 交集
		* 获取多个集合中的相同元素.('多个集合中共有的')
		* 使用 & 运算符
			a & b				// {4,5}
		* 也支持使用set的API来:intersection()
			a.intersection(b)	//{4,5}
	
	# 并集
		* 获取多个集合中的所有元素.('多个集合揉一堆,重复的只留一个')
		* 使用 | 运算符
			a | b		//{1, 2, 3, 4, 5, 6, 7, 8}
		* 也支持使用set的API:union()
			a.union(b)	//{1, 2, 3, 4, 5, 6, 7, 8}

	# 差集
		* 去除当前集合中,与其他集合的相同元素.('当前集合中有的,其他集合没有的')
		* 使用 - 运算符
			a - b			//{1, 2, 3}
		* 也支持使用set的API:difference()
			a.difference(b)	//{1, 2, 3}
	
	# 对称差集/反向交集
		* 返回所个集合中的所有元素,但是会删除相同的元素.('两边集合都不包含的元素')
		* 使用 ^ 运算符
			a ^ b						//{1, 2, 3, 6, 7, 8}
		* 也支持使用set的API:symmetric_difference()
			a.symmetric_difference(b)	//{1, 2, 3, 6, 7, 8}
	
	# 子集/超集
		* 判断当前集合是否是另一个集合中的一部分.('当前集合中的所有元素,另一个集合都有')		
		* 使用 >/< 进行运算
			a = set([4,5])
			b = set([4,5,6,7,8])
			print(a < b)			//True
		* 也支持使用set的API:issuperset/issubset
			a = set([4,5])
			b = set([4,5,6,7,8])
			print(a < b)
			print(b.issuperset(a))	# True,b是a的超集
			print(a.issubset(b))	# True,a是b的子集

	# 判断两个集合是否相等
		* 使用 == 运算符进行比较
		s1 = set([1,2,3])
		s2 = set([1,2,3])
		print(s1 is s2)		//True    
								
----------------------------
api							|
----------------------------
	add(item)
		* 添加一个元素到set

	update(ser)
		* 参数是一个可迭代数据(arr/str/set/....)
		* 会把参数序列中的每一个元素,都添加到 this set 里面
		* 会自动去除重复的选项
	
	remove(item)
		* 移除一个元素,元素不存在,抛出异常
	
	discard(item)
		* 删除一个元素,元素不存在,不会抛出异常
	
	pop()
		* 随机移除一个元素,并且返回
	
	clear()
		* 清空集合
	
	copy()
		* 返回浅拷贝
	
	intersection(t)
		* '交集'
		* 返回当前集合与t集合的交集
		* 他们所有之间相同的元素
	
	union(t)
		* '并集'
		* 返回当前set和t中的所有元素,重复元素只会留下一个
	
	difference(t)
		* '差集'
		* 返回当前集合与t集合的差集
		* 返回当前集合中有,但是t集合中没有的数据
		* '其实就是移除了当前集合中,与t集合相同的数据'
		* '返回当前set里面有的,但是t里面没有的'

	symmetric_difference(t)
		* '对称差集/反向交集'
		* 取出当前set和t集合中的所有数据
		* '会删除掉他们之间重复的数据,不会保留'

	issuperset(t)
		* 判断当前集合是否完全包含t
	
	issubset(t)
		* 判断t集合是否完全包含当前集合
	


		